case class Store[S, A](run: S => A, s: S)